import random
from time import sleep

'''
----1.歌手大赛----
为丰富校园文化生活，学校拟组织一场歌手大赛，从参赛选手中选拔出10名相对突出的学生，授予“校园十大歌手”称号。
比赛设有评委组，每名选手演唱完毕后会由评委组的10名评委打分。
为保证比赛公平公正、防止作弊和恶意打分，计算得分（即打分的平均分）时会先去掉最高分和最低分。
本案例要求编写程序，实现根据需求计算每位选手得分的功能。
'''
# contestant=['Tom','Ammy','Sam','Join','Brown','Bob','Lucy','Aman','Chars','Login','Chin','Riven']
# # contestant=['Tom','Ammy']
# score_list=[]
# lenth=len(contestant)
# score_avg=[]
# student=input('请输入学生姓名：')
# jury=int(input('请输入评委人数：'))
# for i in range(lenth):
#     # print(f'请为第{i+1}为选手评分')
#     score_list=[]
#     for j in range(jury):
#         score=random.randint(1, 10)
#         score_list.append(score)
#     # print(f'第{i+1}位同学获得以下分数：\n{score_list}')
#     score_list.sort()#排序
#     score_list.pop(0)#去掉最低分
#     score_list.pop(-1)#去掉最高分
#     sum_score=sum(score_list)
#     avg=round(sum_score/(jury-2),1)#计算第i位同学的平均分
#     score_avg.append(avg)#把第i名学生的成绩写入列表
#     print(f'第{i+1}位同学的最后得分为：',score_avg[i])
# score_avg2=sorted(score_avg)
# print('歌唱比赛成绩单：',score_avg2)
# print('本次比赛的最高分为：',score_avg2[-1])
# print('本次比赛的最低分为：',score_avg2[0])
'''
----登录函数----
编写一个用户登录逻辑，用户名密码提前设置（列表嵌套字典存储），返回用户登录成功或者失败的结果。
'''
# user1 = {'id':'1001','username':'zhangsan','password':'123'}
# user2 = {'id':'1002','username':'lisi','password':'123'}
# user3 = {'id':'1003','username':'wangwu','password':'123'}
# user_list = [user1,user2,user3]
# while True:
#     un=input('请输入用户名：')
#     pw=input('请输入密码')
#     for user in user_list:
#         if un==user['username'] and pw==user['password']:
#             tag =1
#             break
#         else:
#             tag=2
#
#     if tag==1:
#         sleep(0.5)
#         print('登陆成功！')
#         break
#     else:
#         sleep(0.5)
#         print('!'*20+'请输入正确的用户名/密码!！'+'!'*20)
#         sleep(1)
#         continue

'''
案例：排序算法（冒泡排序）
'''
# 比较几轮
nums = []
length=int(input('请输入列表元素数量（个）：'))
for i in range(length):
    nums.append(int(input('请输入列表元素：')))
print(nums)
#冒泡排序
for i in range(len(nums)-1):
    for j in range(length-1-i):
        if nums[j+1]<nums[j]:
            nums[j],nums[j+1]=nums[j+1],nums[j]
print('冒泡排序的结果为：',nums)
'''
----银行ATM----
银行ATM存款取款：
1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式)；
2.提示用户输入银行卡和密码，遍历每张卡的信息验证是否成功；
3.如果用户输入正确---提示让用户选择取款.存款还是退出,并提示余额多少.  输入错误---重新输入卡号密码；
  选择取款---提示输入取b款额度,如果超过余额,提示余额不足;否则,在余额上减掉相应金额；
  选择存款---输入存款额度,余额加上相应额度,并提示余额多少；
  选择退出---重新登录；
4.连续3次输入错误账号密码,提示银行卡已被锁定，程序结束。
'''
bank_card1={'cardID':'1001','password':'123456','balance':10000}
bank_card2={'cardID':'1002','password':'666666','balance':20000}
bank_card3={'cardID':'1003','password':'888888','balance':15000}
cards=[bank_card1,bank_card2,bank_card3]
operation=[1,2,3]

tag=0
count=0
bank_card={}
#设永真
while True:
    id=input("请输入您的卡号：")
    pwd=input("请输入密码：")
    #验证登录
    for card in cards:
        if id==card['cardID'] and pwd==card['password']:
            tag=1
            bank_card=card
            break
    #登录成功
    if tag==1:
        while True:
            for operat in operation:
                print(f"你的余额是：{bank_card['balance']}")
                print(f'''操作类型
                   1\t取款
                   2\t存款
                   3\t退出''')
                number = int(input("请输入操作类型："))
                # print(type(number))
                # print(type(operat))
                # 取款流程
                if number == 1:
                    send_money = int(input("请输入取款额度："))
                    while True:
                        if send_money > bank_card['balance']:
                            print("余额不足！！！")
                            #余额不足的处理情况
                            unbalance_number=input(f'''1   go on\nother   exit\n:''')
                            if unbalance_number=='1':    #余额不足，重新输入
                                send_money = int(input("请重新输入取款额度："))
                                continue
                            else:   #余额不足，退出取款
                                print("退出取款！！！")
                                break
                            break
                        else:    #余额充足，取款成功
                            bank_card['balance'] = bank_card['balance'] - send_money
                            print(f"取款成功！")
                        break
                # 存款流程
                elif number == 2:
                    deposit = int(input("请输入存款金额："))
                    bank_card['balance']= bank_card['balance'] + deposit
                    print(f"存款成功！")
                    continue
                elif number == 3:
                    print("退出成功！")
                    break
                else:
                    print("请选择操作类型！")
                    break
    else:
        count+=1
        if count<3:
            print("输入错误---重新输入卡号密码!")
        else:
            print("您的银行卡已被锁定！！！")
            break

